//
// Created by 28365 on 2025/3/6.
//

#ifndef ODUPDATERSDK_HTTPUTILS_HPP
#define ODUPDATERSDK_HTTPUTILS_HPP

#include "ODUpdater.h"
#include "utils/curl_modify/CURLCompatible.h"

using namespace std;

class HttpUtils {

public:

    /**
     * 发送get请求
     * @param url 请求url
     * @param param 请求参数
     * @param odUpdater 更新器实例
     */
    template<typename T>
    static ReqValue<T> sendGet(const string& url, const map<string, string> &param, const ODUpdater &odUpdater) {

        CURLCompatible curl_m(&odUpdater);
        string c_url = odUpdater.getReqProtocol() + "://" + odUpdater.getIp() + url;
        ReqValue<T> reqValue = curl_m.sendGet<T>(c_url,param);
        return reqValue;
    }

    /**
     * 发送文件下载请求
     * @param url 请求url
     * @param param 请求参数
     * @param outStream 文件输出流
     * @param res 资源
     * @param version 当前资源版本
     */
    static ReqValue<string> downloadFile(const string &url, const map<string, string> &param, ofstream *outStream, const Res *res,
                                             int version,const ODUpdater &odUpdater) {
        CURLCompatible curl_m(&odUpdater);
        string c_url = odUpdater.getReqProtocol() + "://" + odUpdater.getIp() + url;
        ReqValue<string> reqValue = curl_m.downloadFile(c_url,param,outStream,res,version);
        return reqValue;
    }

};


#endif //ODUPDATERSDK_HTTPUTILS_HPP
